package cn.iocoder.yudao.framework.business.footprint.service;

import cn.iocoder.yudao.framework.business.footprint.pojo.vo.AppFootprintVO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

import java.io.Serializable;

/**
 * 足迹/浏览记录 ServiceImpl 接口类，由子类继承
 *
 * @author 山野羡民
 */
public interface AppFootprintService<SNAPSHOT extends Serializable, RESP extends AppFootprintVO> {

    /**
     * 添加
     *
     * @param bizId  业务编号
     * @param userId 用户编号
     */
    boolean save(Long bizId, Long userId);

    /**
     * 删除
     *
     * @param bizId  业务编号
     * @param userId 用户编号
     */
    boolean delete(Long bizId, Long userId);

    /**
     * 清除
     *
     * @param userId 用户编号
     */
    boolean clear(Long userId);

    /**
     * 是否已喜好
     *
     * @param bizId  业务编号
     * @param userId  用户编号
     * @return 是否已喜好
     */
    boolean isTrue(Long bizId, Long userId);

    /**
     * 获取业务数据
     *
     * @param bizId  业务编号
     * @return 业务数据
     */
    SNAPSHOT getSnapshot(Long bizId);

    /**
     * 分页
     *
     * @param current 当前页码
     * @param size 每页条数
     * @param userId 用户编号
     * @return 分页信息
     */
    PageResult<RESP> getPage(Integer current, Integer size, Long userId);

}
